# -*- Mode: python; indent-tabs-mode: nil; tab-width: 40 -*-
# This Source Code Form is subject to the terms of the Mozilla Public
# License, v. 2.0. If a copy of the MPL was not distributed with this
# file, You can obtain one at http://mozilla.org/MPL/2.0/.

EXPORTS.soundtouch += [
    'FIFOSamplePipe.h',
    'SoundTouch.h',
    'soundtouch_config.h',
    'SoundTouchFactory.h',
    'STTypes.h',
]

UNIFIED_SOURCES += [
    'AAFilter.cpp',
    'cpu_detect_x86.cpp',
    'FIFOSampleBuffer.cpp',
    'FIRFilter.cpp',
    'InterpolateCubic.cpp',
    'InterpolateLinear.cpp',
    'InterpolateShannon.cpp',
    'RateTransposer.cpp',
    'SoundTouch.cpp',
    'SoundTouchFactory.cpp',
    'TDStretch.cpp',
]

if CONFIG['INTEL_ARCHITECTURE']:
    if CONFIG['MOZ_SAMPLE_TYPE_FLOAT32']:
        SOURCES += ['sse_optimized.cpp']
        SOURCES['sse_optimized.cpp'].flags += CONFIG['SSE2_FLAGS']
    else:
        SOURCES += ['mmx_optimized.cpp']
        SOURCES['mmx_optimized.cpp'].flags += CONFIG['MMX_FLAGS']

if CONFIG['OS_ARCH'] != 'WINNT':
    # GCC/Clang require permissions to be explicitly set for the soundtouch
    # header.
    CXXFLAGS += ['-include', SRCDIR + '/soundtouch_perms.h']
else:
    # Windows need alloca renamed to _alloca
    DEFINES['alloca'] = '_alloca'

# We allow warnings for third-party code that can be updated from upstream.
ALLOW_COMPILER_WARNINGS = True

FINAL_LIBRARY = 'lgpllibs'

# Use abort() instead of exception in SoundTouch.
DEFINES['ST_NO_EXCEPTION_HANDLING'] = 1
